local stockKey = 'seckill:stock:' .. KEYS[1] -- 商品库存List键名  KEYS[1]-商品ID
local orderHashKey = 'seckill:orders' -- Hash键名，临时订单的Key

-- 从List中扣减库存
local inventory = redis.call('RPOP', stockKey)  -- 从指定商品库存List中弹出数据

if not inventory then
    return nil -- 如果库存为空，返回nil表示没有库存可用
end

-- 构造临时订单对象ARGV[1~4]调用入参传入
local orderObj = {
    userId = ARGV[1],
    skuId = ARGV[2],
    skuNum = ARGV[3],
    outTradeNo =ARGV[4]
}

-- 添加用户下单记录到Hash中
local hashKey = KEYS[1] .. ':' .. ARGV[1] -- 动态生成Hash的key 临时订单hashKey  用户ID:商品ID
redis.call('HSET', orderHashKey, hashKey, cjson.encode(orderObj))

return orderObj -- 返回临时订单对象
